package com.project.pojo.dto;

import com.project.entity.CmsOrderInvoice;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Description: 订单详情返回结果类（前后台通用）
 * @Author: zhuchi
 * @CreateDate: 2020/11/1 16:22
 * @Version: 1.0
 */
@Data
@ApiModel(value = "订单详情返回结果类（前后台通用）")
public class ProductOrderDetailDTO {

    /**
     * 订单ID
     */
    @ApiModelProperty(value = "订单ID")
    private Long productOrderId;

    /**
     * 用户ID
     */
    @ApiModelProperty(value = "用户ID")
    private Long userId;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderNumber;

    /**
     * 购买总数
     */
    @ApiModelProperty(value = "购买总数")
    private Integer quantity;

    /**
     * 订单总金额
     */
    @ApiModelProperty(value = "订单总金额")
    private BigDecimal totalAmount;

    /**
     * 是否使用余额（1:使用,2:不使用）
     */
    @ApiModelProperty(value = "是否使用余额（1:使用,2:不使用）")
    private Integer useBalance;

    /**
     * 抵扣金额（余额抵扣）
     */
    @ApiModelProperty(value = "抵扣金额（余额抵扣）")
    private BigDecimal deductionAmount;

    /**
     * 收货人名称
     */
    @ApiModelProperty(value = "收货人名称")
    private String receiveName;

    /**
     * 收货人联系方式
     */
    @ApiModelProperty(value = "收货人联系方式")
    private String receiveMobile;

    /**
     * 收货地址
     */
    @ApiModelProperty(value = "收货地址")
    private String receiveAddress;

    /**
     * 支付单号
     */
    @ApiModelProperty(value = "支付单号")
    private String tradeNo;

    /**
     * 系统退款单号
     */
    @ApiModelProperty(value = "系统退款单号")
    private String refundNo;

    /**
     * 退款金额
     */
    @ApiModelProperty(value = "退款金额")
    private BigDecimal refundAmount;

    /**
     * 退款说明
     */
    @ApiModelProperty(value = "退款说明")
    private String reasons;

    /**
     * 退款附言
     */
    @ApiModelProperty(value = "退款附言")
    private String reasonsPostscript;

    /**
     * 发货物流单号
     */
    @ApiModelProperty(value = "发货物流单号")
    private String logisticsNumber;

    /**
     * 物流公司名称
     */
    @ApiModelProperty(value = "物流公司名称")
    private String logisticsCompany;

    /**
     * 物流公司代码
     */
    @ApiModelProperty(value = "物流公司代码")
    private String logisticsCompanyCode;

    /**
     * 物流公司图标
     */
    @ApiModelProperty(value = "物流公司图标")
    private String logisticsCompanyImg;

    /**
     * 是否需要发票（0:不需要,1:需要）
     */
    @ApiModelProperty(value = "是否需要发票（0:不需要,1:需要）")
    private Integer invoiceRequired;

    /**
     * 下单时间
     */
    @ApiModelProperty(value = "下单时间")
    private Date createTime;

    /**
     * 最晚支付时间
     */
    @ApiModelProperty(value = "最晚支付时间")
    private Date deadlineTime;

    /**
     * 取消时间
     */
    @ApiModelProperty(value = "取消时间")
    private Date closeTime;

    /**
     * 支付时间
     */
    @ApiModelProperty(value = "支付时间")
    private Date payTime;

    /**
     * 发货时间
     */
    @ApiModelProperty(value = "发货时间")
    private Date sendTime;

    /**
     * 收货时间
     */
    @ApiModelProperty(value = "收货时间")
    private Date receiveTime;

    /**
     * 申请退款时间
     */
    @ApiModelProperty(value = "申请退款时间")
    private Date applyRefundTime;

    /**
     * 退款成功时间
     */
    @ApiModelProperty(value = "退款成功时间")
    private Date successTime;

    /**
     * 退款失败时间
     */
    @ApiModelProperty(value = "退款失败时间")
    private Date failTime;

    /**
     * 订单备注
     */
    @ApiModelProperty(value = "订单备注")
    private String remarks;

    /**
     * 订单状态（-1:已取消、0:待付款、1:待发货、2:待收货、3:待评价、4:已完成,5:退款中、6:退款成功、7:退款失败）
     */
    @ApiModelProperty(value = "订单状态（-1:已取消、0:待付款、1:待发货、2:待收货、3:待评价、4:已完成,5:退款中、6:退款成功、7:退款失败）")
    private Integer state;

    /**
     * 下单用户昵称
     */
    @ApiModelProperty(value = "下单用户昵称")
    private String wxNickname;

    /**
     * 下单用户手机号码
     */
    @ApiModelProperty(value = "下单用户手机号码")
    private String mobile;

    /**
     * 订单商品信息
     */
    @ApiModelProperty(value = "订单商品信息")
    private List<ProductOrderListItemDTO> orderListItems;

    /**
     * 订单发票信息
     */
    @ApiModelProperty(value = "订单发票信息")
    private CmsOrderInvoice orderInvoice;

}
